
public class Sorter {

    public void traversal(int[] array) {
        if (array != null && array.length > 0) {
            for (int i = 0; i < array.length; i++) {
                System.out.print(array[i]);
                System.out.print((i < array.length - 1) ? " , " : "");
            }
            System.out.println();
        }
    }

    public int[] sort(int[] array) { // 实现排序并返回一个新数组

        // int[] x = array ; // 将 array 变量中存储的地址值赋值给 x 变量

        int[] x = new int[ array.length ] ; // 创建新数组

        /* for( int i = 0 ; i < x.length ; i++ ) {  x[ i ] = array[ i ] ; } */

        // 从 array 数组中下标为 0 的元素开始 复制 array.length  个元素 到 x 数组中，并从 x 数组下标为 0 的位置开始存放
        System.arraycopy( array , 0 , x , 0 , array.length ); // 复制数组

        // 对复制之后的数组进行排序
        for (int i = 0; i < x.length - 1 ; i++) {
            for (int j = 0; j < x.length - 1 - i ; j++) {
                if( x[ j ] > x[ j + 1 ] ) {
                    x[ j ] ^= x[ j + 1 ] ;
                    x[ j + 1 ] ^= x[ j ] ;
                    x[ j ] ^= x[ j + 1 ] ;
                }
            }
        }
        return x ;
    }

    public static void main(String[] args) {

        Sorter sorter = new Sorter();

        int[] a = { 1, 100, -20, 99, 1000, 0, 30 };
        System.out.print("原数组: ");
        sorter.traversal(a);// 原数组:1,100,-20,99,1000,0,30

        int[] x = sorter.sort(a);
        System.out.print("新数组: ");
        sorter.traversal(x);// 新数组:-20,0,1,30,99,100,1000

        System.out.print("原数组: ");
        sorter.traversal(a);// 原数组:1,100,-20,99,1000,0,30
    }

}
